package com.smart.community.region.service;

import java.util.List;

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;
import com.smart.community.region.dto.ShopOwnerDTO;
import com.smart.community.region.entity.ShopOwner;
import com.smart.community.region.vo.ShopOwnerVO;

/**
 * 店铺业主服务接口
 * 
 * @author Wu.Liang
 * @version 1.0.0
 * @since 2025-01-30
 */
public interface IShopOwnerService extends IService<ShopOwner> {
    
    /**
     * 分页查询店铺业主列表
     * 
     * @param page 分页参数
     * @param ownerName 业主姓名
     * @param ownerType 业主类型
     * @param ownerPhone 联系电话
     * @param ownerIdCard 身份证号
     * @param companyName 企业名称
     * @param email 邮箱
     * @param status 状态
     * @param keyword 关键词搜索
     * @param createTimeStart 创建开始时间
     * @param createTimeEnd 创建结束时间
     * @return 分页结果
     */
    IPage<ShopOwnerVO> getShopOwnerPage(Page<ShopOwner> page, String ownerName, Integer ownerType, String ownerPhone, 
            String ownerIdCard, String companyName, String email, Integer status, String keyword, 
            String createTimeStart, String createTimeEnd);
    
    /**
     * 根据ID查询店铺业主详情
     * 
     * @param id 业主ID
     * @return 业主详情
     */
    ShopOwnerVO getShopOwnerById(Long id);
    
    /**
     * 创建店铺业主
     * 
     * @param shopOwnerDTO 业主信息
     * @return 业主ID
     */
    Long createShopOwner(ShopOwnerDTO shopOwnerDTO);
    
    /**
     * 更新店铺业主
     * 
     * @param id 业主ID
     * @param shopOwnerDTO 业主信息
     * @return 是否成功
     */
    boolean updateShopOwner(Long id, ShopOwnerDTO shopOwnerDTO);
    
    /**
     * 删除店铺业主
     * 
     * @param id 业主ID
     * @return 是否成功
     */
    boolean deleteShopOwner(Long id);
    
    /**
     * 批量删除店铺业主
     * 
     * @param ids 业主ID列表
     * @return 是否成功
     */
    boolean batchDeleteShopOwners(List<Long> ids);
    
    /**
     * 根据店铺ID查询业主列表
     * 
     * @param shopId 店铺ID
     * @return 业主列表
     */
    List<ShopOwnerVO> getShopOwnersByShopId(Long shopId);
    
    /**
     * 根据业主ID查询关联店铺列表
     * 
     * @param ownerId 业主ID
     * @return 店铺列表
     */
    List<ShopOwnerVO> getShopsByOwnerId(Long ownerId);
}